[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(1)

JIGGLYPOP

염동환


새로운 개발을 좋아하는 개발자

2020-07-11 20:21 시에 저장한 글입니다.

정보처리기사 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 책을 참고해서 공부하세요

2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요.

1. 데이터 타입(Data Type)


  • 변수(Variable)에 저장될 데이터의 형식을 나타내는 것으로, 변수에 값을 저장하기 전에 문자형, 정수형, 실수형 등 어 떤 형식의 값을 저장할지 데이터 타입을 지정하여 변수를 선언해야 함
  • 데이터 타입의 유형
  • 불린 타입 (Boolean Type): 조건의 참(True), 거짓(False) 여부를 판단. 기본값은 거짓(False) (true, false)
  • 문자 타입 (Character Type) : 한 문자를 저장할 때, 작은따옴표(’ ’) 안에 표시 (‘A’, ‘a’, ‘1’, ’*‘)
  • 문자열 타입(Character String Type) : 문자열을 저장할 때, 큰따옴표(” ”) 안에 표시 (“Hello!”, “1+2=3”)
  • 정수 타입 (Integer Type) : 정수, 즉 소수점이 없는 숫자를 저장 (1, -1, 10, -100)
  • 부동 소수점 타입 (Floating Point Type) : 소수점 이하가 있는 실수를 저장할 때 (0.123×102, -1.6×23)
  • 배열 타입 (Array Type) : 같은 타입의 데이터 집합을 만들어 저장 , 데이터는 중괄호({ }) 안에 콤마(,)로 구분하여 값들을 나열 ({1, 2, 3, 4, 5})

2. 변수와 기억 클래스


  • 변수(Variable)

    • 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미
    • 변수는 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분
  • 기억 클래스

    • 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용 범위에 제한이 있음. 이러한 기억영역을 결정하는 작업
  • C언어에서 제공하는 기억 클래스의 종류

    • 자동 변수(Automatic Variable) : 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
    • 외부 변수(External Variable) : 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조(reference)하기 위한 변수
    • 정적 변수(Static Variable) : 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수
    • 레지스터 변수(Register Variable) : 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수

3. scanf 함수 / printf 함수


  • scanf 함수 : C언어의 표준 입력 함수로, 키보드로 입력받아 변수에 저장하는 함수
scanf("%3d", &a);
// % : 서식 문자 / 3 : 입력 자릿수 3자리 / d : 10진수로 입력 / &a : 입력받은 데이터를 변수 a의 주소에 저장
  • 서식 문자열 : printf함수로 출력할 때도 동일하게 적용
  • %d : 정수형 10진수
  • %u : 부호없는 정수형 10진수
  • %o : 정수형 8진수
  • %x : 정수형 16진수
  • %c : 문자를 입·출력
  • %s : 문자열을 입·출력
  • %f : 소수점을 포함하는 실수를 입·출력
  • %e : 지수형 실수를 입·출력
  • %ld : long형 10진수를 입·출력
  • %lo : long형 8진수를 입·출력
  • %lx : long형 16진수를 입·출력
  • %p : 주소를 16진수로 입·출력
  • printf 함수 : C언어의 표준 출력 함수로, 인수로 주어진 값을 화면에 출력하는 함수
printf(" %-5.2f ", 200.2);
// % : 서식 문자 / 8 : 출력 자릿수 5자리 / f : 실수로 출력 / 2 : 소수점 이하를 2자리로 지정 /- : 왼쪽부터 출력
  • \n : 커서를 다음 줄 앞으로 이동
  • ’ : 작은따옴표를 출력
  • \b : 커서를 왼쪽으로 한 칸 이동
  • ” : 큰따옴표를 출력
  • \t : 커서를 일정 간격 띄움
  • \a : 스피커로 벨 소리를 출력
  • \r : 커서를 현재 줄의 처음으로 이동
  • \ : 역 슬래시를 출력
  • \0 : 널 문자를 출력
  • \f : 한 페이지를 넘김

4. Java에서의 표준 입·출력


  • Java에서의 표준 입력 : Java에서 키보드로 입력받은 값을 변수에 저장하려면 먼저 Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 사용
  • 객체 변수 생성

    • Scanner : 입력에 사용할 객체 변수를 생성할 때 사용하는 클래스 이름
    • sc : 객체 변수명
    • new : 객체 생성 예약어
    • Scanner( ) : 클래스의 이름
    • System.in : 표준 입력장치(키보드)를 의미
  • 객체 변수 활용

    • scin.nextInt( )
    • scin : 입력에 사용할 객체 변수 이름이다. 객체 변수 생성 시 사용한 객체 변수 이름과 동일해야 함
    • nextInt( ) : 입력받은 값을 정수형으로 반환
  • Java에서의 표준 출력

    • Java에서 값을 화면에 출력할 때 : printf( ) 메소드를 이용
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();

		if (a>b) System.out.println(">");
		else if(b>a) System.out.println("<");
		else System.out.println("==");
	}
}

5. 연산자


  • 산술 연산자
연산자 의미
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지
++ 증가 연산자
- - 감소 연산자
  • 관계 연산자
연산자 의미
== 같다
!= 같지 않다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다
  • 논리 연산자
연산자 의미 비고
! not 부정
&& and 모두 참이면 참
|| or 하나라도 참이면 참
  • 비트 연산자
연산자 의미 비고 연산자 의미 비고
& and 모든 비트가 1일 때만 1 ~ not 각 비트의 부정, 0이면 1, 1이면 0
^ xor 모든 비트가 같으면 0, 하나라도 다르면 1 << 왼쪽 시프트 비트를 왼쪽으로 이동
| or 모든 비트 중 한 비트라도 1이면 1 >> 오른쪽 시프트 비트를 오른쪽으로 이동
  • 대입 연산자
연산자 의미
+= a += 1 a = a + 1
-= a -= 1 a = a - 1
* = a * = 1 a = a * 1
/= a /= 1 a = a / 1
%= a %= 1 a = a % 1
<<= a <<= 1 a = a << 1
>>= a >>= 1 a = a >> 1
  • 조건 연산자 형 : 조건 ? 1 : 2 : 참이면 1, 거짓이면 2 반환
  • 기타 연산자
연산자 의미
sizeof 자료형의 크기를 표시한다.
,(콤마) 콤마로 구분하여 한 줄에 두 개 이상의 수식을 작성하거나 변수를 정의한다. 왼쪽에서 른쪽으로 순서대로 수행되며, 순서 연산자라 부르기도 한다.
(자료형) 사용자가 자료형을 다른 자료형으로 변환할 때 사용하는 것으로, cast(캐스트) 연산자라고 부른다. 변환할 자료형을 괄호 안에 넣어서 변환할 값이나 변수명 앞에 놓는다.
  • 증가/감소 연산자는 변수의 앞(전치) 또는 변수의 뒤(후치)에 붙여 사용한다.
  • 전치 : 변수 앞에 증감 연산자가 오는 형태로 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용한다(++a, —a).
  • 후치 : 변수 뒤에 증감 연산자가 오는 형태로 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킨다(a++, a—).
  • 연산자 우선순위 : 단항, 산술, 시프트, 관계, 비트, 논리, 조건, 대입, 순서

6. if문


  • 조건에 따라서 실행할 문장을 달리하는 제어문. 조건이 참일 때만 실행할 문장을 지정할 수도 있고, 참과 거짓에 대해 각각 다른 실행문을 지정할 수도 있음
  • 단순 if문 : 조건이 한 개 일 때 사용하는 제어문

    • 조건이 참일 때 실행할 문장이 하나인 경우
#include <stdio.h>

int main(){
  int num1 = 10;
  if (num1 == 10)
    printf("10\n");
  return 0;
}
  • 조건이 참일 때 실행할 문장이 두 문장 이상인 경우
#include <stdio.h>

int main(){
  int num1 = 10;
  if (num1 == 10){
    printf("두 문장\n");
    printf("10\n");
  }
  return 0;
}
  • 조건이 참일 때와 거짓일 때 실행할 문장/이 다를 때
#include <stdio.h>

int main(){
  int num1 = 10;
  if (num1 == 10){
    printf("10\n");
  }else{
    printf("not 10\n");
  }
  return 0;
}
  • 다중 if문 : 조건이 여러 개 일 때 사용하는 제어문
#include <stdio.h>

int main(){
  int num1 = 10;
  if (num1 >= 10){
    if (num1 >= 20){
      printf("20 이상\n");
    }
  }
  return 0;
}

7. switch문


  • 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문
  • case문의 레이블에는 한 개의 상수만 지정할 수 있으며, int, char, enum형의 상수만 가능
  • case문의 레이블에는 변수 지정 불가
  • break문은 생략이 가능하지만 break문이 생략되면 수식과 레이블이 일치할 때 실행할 문장부터 break문 또는 switch 문이 종료될 때까지 모든 문장이 실행
#define _CRT_SECURE_NO_WARNINGS
// scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int main(){
  int num1;
  scanf("%d", &num1);

  switch (num1){
    case 1:
      printf("1 \n");
      break
    case 2:
      printf("2 \n");
      break
    default:
      printf("default\n");
  }
  return 0;
}
// 1(입력)
// 1
// 2
// default